<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
	<link rel="stylesheet" href="/assets/css/atom-one-light.css">
    
        <title>如何在非校园网环境下使用学校文献数据库</title>
		<link rel="stylesheet" type="text/css" href="/assets/css/002.css">
    
	<link rel="stylesheet" href="/assets/css/font-awesome.min.css">
	<link rel="shortcut icon" href="/assets/img/favicon.ico" type="image/x-icon">
	<link rel="icon" href="/assets/img/favicon.ico" type="image/x-icon">
	<script src="/assets/js/highlight.pack.js"></script>
	<script>hljs.initHighlightingOnLoad();</script>

	

	<script async src="https://www.googletagmanager.com/gtag/js?id=UA-140127665-1"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'UA-140127665-1');
</script>


</head>
<body>
	<div class="wrapper">
		<div class="default_title">
			<img src="/assets/img/mycomputer.png" />
			
				<h1>NaNg's blog</h1>
			
		</div>
		<ul class="topbar">
	<a href="/pages/me.html"><li><u>A</u>bout</li></a>
	<a href="/pages/links.html"><li><u>L</u>inks</li></a>
	<a href="https://www.dropbox.com/sh/nhy3m3cvojizkk5/AABH8mt5gh3PiBrtWnCxE87ma?dl=0"><li><u>D</u>ropbox</li></a>
</ul>
		<div class="tag_list">
			<ul id="tag-list">
				<li><a href="/" ><img src="/assets/img/disk.png" />(C:)</a>
			<ul>
				
				
				<li><a href="/tag/3d/" title="3d"><img src="/assets/img/folder.ico" />3d</a></li>
				
				<li><a href="/tag/bioinformatics/" title="bioinformatics"><img src="/assets/img/folder.ico" />bioinformatics</a></li>
				
				<li><a href="/tag/notes/" title="notes"><img src="/assets/img/folder.ico" />notes</a></li>
				
				<li><a href="/tag/others/" title="others"><img src="/assets/img/folder.ico" />others</a></li>
				
				<li><a href="/tag/sci-fiction/" title="sci fiction"><img src="/assets/img/folder.ico" />sci fiction</a></li>
				
			</ul>
				</li>
			</ul>
		</div>
		<div class="post_list">
			
				<ul>
					
					<li>
						<a href="https://ani-net-project.gitee.io/index.html" title="AniNet">
								<img class="small-icon" src="/assets/img/aninet.png" title="AniNet" />AniNet
						</a>
					</li>
					
					<li>
						<a href="/examples/boids/index.html" title="Boids">
								<img class="small-icon" src="/assets/img/bird.png" title="Boids" />Boids
						</a>
					</li>
					
					<li>
						<a href="/examples/EM-alg/1_how_it_works.html" title="EM 算法 1. how it works">
								<img class="small-icon" src="/assets/img/notebook.ico" title="EM 算法 1. how it works" />EM 算法 1. how it works
						</a>
					</li>
					
					<li>
						<a href="/examples/pyvm/pyvm_ch0-3_cn.html" title="翻译：Inside Python Virtual Machine（前三章）">
								<img class="small-icon" src="/assets/img/html_ie.ico" title="翻译：Inside Python Virtual Machine（前三章）" />翻译：Inside Python Virtual Machine（前三章）
						</a>
					</li>
					
					<li>
						<a href="/20190624/cLife.html" title="器官工业幻想">
								<img class="small-icon" src="/assets/img/file.ico" title="器官工业幻想" />器官工业幻想
						</a>
					</li>
					
					<li>
						<a href="/examples/pubnet/Network_statistic.html" title="PubNet network statistic">
								<img class="small-icon" src="/assets/img/notebook.ico" title="PubNet network statistic" />PubNet network statistic
						</a>
					</li>
					
					<li>
						<a href="/examples/pubnet/sample.html" title="PubMed bio-conception network example">
								<img class="small-icon" src="/assets/img/net.png" title="PubMed bio-conception network example" />PubMed bio-conception network example
						</a>
					</li>
					
					<li>
						<a href="/examples/hpo_enrich/example_sagd_00055.html" title="HPO enrichment example">
								<img class="small-icon" src="/assets/img/notebook.ico" title="HPO enrichment example" />HPO enrichment example
						</a>
					</li>
					
					<li>
						<a href="/20190222/KS-Test.html" title="Two sample Kolmogorov-Smirnov test">
								<img class="small-icon" src="/assets/img/file.ico" title="Two sample Kolmogorov-Smirnov test" />Two sample Kolmogorov-Smirnov test
						</a>
					</li>
					
					<li>
						<a href="/20190220/threejs-test-page.html" title="three.js test page">
								<img class="small-icon" src="/assets/img/tree.png" title="three.js test page" />three.js test page
						</a>
					</li>
					
					<li>
						<a href="/20181111/hic_data_format.html" title="Hi-C 数据分析结果应该怎么存？">
								<img class="small-icon" src="/assets/img/file.ico" title="Hi-C 数据分析结果应该怎么存？" />Hi-C 数据分析结果应该怎么存？
						</a>
					</li>
					
					<li>
						<a href="/20181010/d3_bubble_chart.html" title="用 D3.js 画一个 bubble chart">
								<img class="small-icon" src="/assets/img/file.ico" title="用 D3.js 画一个 bubble chart" />用 D3.js 画一个 bubble chart
						</a>
					</li>
					
					<li>
						<a href="/20180724/new_kind_slides.html" title="论制作 Slides 的几种姿势">
								<img class="small-icon" src="/assets/img/file.ico" title="论制作 Slides 的几种姿势" />论制作 Slides 的几种姿势
						</a>
					</li>
					
					<li>
						<a href="/slides/test/slideshow.html" title="Markdown Slides Test">
								<img class="small-icon" src="/assets/img/slides.png" title="Markdown Slides Test" />Markdown Slides Test
						</a>
					</li>
					
					<li>
						<a href="/20180221/bioview.html" title="bioView - 一个生信常用文件格式的可读性增强工具">
								<img class="small-icon" src="/assets/img/file.ico" title="bioView - 一个生信常用文件格式的可读性增强工具" />bioView - 一个生信常用文件格式的可读性增强工具
						</a>
					</li>
					
					<li>
						<a href="/20170916/markdown-test-page.html" title="Markdown Test Page">
								<img class="small-icon" src="/assets/img/file.ico" title="Markdown Test Page" />Markdown Test Page
						</a>
					</li>
					
					<li>
						<a href="/20170831/gol-js.html" title="一个JS实现的生命游戏">
								<img class="small-icon" src="/assets/img/file.ico" title="一个JS实现的生命游戏" />一个JS实现的生命游戏
						</a>
					</li>
					
					<li>
						<a href="/20170831/parallel.html" title="这大概是程序串行改并行最简单粗暴的方法">
								<img class="small-icon" src="/assets/img/file.ico" title="这大概是程序串行改并行最简单粗暴的方法" />这大概是程序串行改并行最简单粗暴的方法
						</a>
					</li>
					
					<li>
						<a href="/20170730/learn-docker.html" title="学习Docker">
								<img class="small-icon" src="/assets/img/file.ico" title="学习Docker" />学习Docker
						</a>
					</li>
					
					<li>
						<a href="/20170530/learn-assemble.html" title="学习汇编语言">
								<img class="small-icon" src="/assets/img/file.ico" title="学习汇编语言" />学习汇编语言
						</a>
					</li>
					
					<li>
						<a href="/20170505/schoolnet.html" title="如何在非校园网环境下使用学校文献数据库">
								<img class="small-icon" src="/assets/img/file.ico" title="如何在非校园网环境下使用学校文献数据库" />如何在非校园网环境下使用学校文献数据库
						</a>
					</li>
					
					<li>
						<a href="/20170308/zerotier.html" title="使用ZeroTier搭建虚拟局域网">
								<img class="small-icon" src="/assets/img/file.ico" title="使用ZeroTier搭建虚拟局域网" />使用ZeroTier搭建虚拟局域网
						</a>
					</li>
					
					<li>
						<a href="/20161224/hy-in-brief.html" title="Python生态下的Lisp方言">
								<img class="small-icon" src="/assets/img/file.ico" title="Python生态下的Lisp方言" />Python生态下的Lisp方言
						</a>
					</li>
					
					<li>
						<a href="/20161210/scrapy_douban.html" title="使用Scrapy爬取豆瓣相册">
								<img class="small-icon" src="/assets/img/file.ico" title="使用Scrapy爬取豆瓣相册" />使用Scrapy爬取豆瓣相册
						</a>
					</li>
					
					<li>
						<a href="/20161115/speed_up_python.html" title="加速Python">
								<img class="small-icon" src="/assets/img/file.ico" title="加速Python" />加速Python
						</a>
					</li>
					
				</ul>
			
		</div>
		<div class="post_total">
			
				<div class="left">25 object(s)</div>
			
			<div class="right">&nbsp;</div>
		</div>
	</div>
	
        <div class="content">
			<div class="post_title">
				<img src="/assets/img/file.png" />
				<h1>如何在非校园网环境下使用学校文献数据库</h1>
				<a href="/"><div class="btn"><span class="fa fa-times"></span></div></a>
				<div class="btn btn_max"><span class="fa fa-window-maximize"></span></div>
				<div class="btn"><span class="fa fa-window-minimize"></span></div>
			</div>
			<ul class="topbar">
				<li>May 5, 2017</li>
			</ul>
			<div class="post_content" style="max-height: 600px">
				<div class="post_content_inner">
        		<p>基本上每个大学都会购买大量的文献数据库，但这些一般情况下都是只能在校园网环境下使用。
当然，学校一般也会提供给学生vpn和客户端什么的以便校外访问，但用起来其实挺不方便，
至少我们学校提供的易瑞客户端就挺不好用的，过一会儿就要重新登录来保持连接，查文献的
时候感觉非常不方便，有时候连续几次感觉都要抓狂了。
如果能够有一种办法能够像在校园网之中那样方便地直接ip登录就好了。</p>

<h3 id="代理搭建篇">代理搭建篇</h3>
<p>这当然是可以做到的，
直接在校园网内部搭建个代理就行了，和科学上网的原理是差不多的。
所需材料:</p>

<ul>
  <li>一台位于校园网内部的，安装有shadowsocks的机器</li>
  <li>一台具有外网ip并且可以稳定访问的机器，我用的是阿里云的vps</li>
</ul>

<p>首先，我们要找到一台可以长时间放在校园网内的机器，我还是用的树莓派，它比较小，不怎么显眼，
而且就算一直开着的话能耗也比较低。
然后我们就需要在这台机器上面开启起一个代理，通过它来转发我们的网页请求，这样，文献服务器那边看到的
就是我们校园网内代理机器的ip。 用shadowsocks可以轻松做到这一点
（如果你没有接触过ss，你可以看看<a href="https://github.com/shadowsocks/shadowsocks/wiki/Shadowsocks-%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E">这里</a>）
<!-- more -->
首先，登录代理机器，然后用shadowsocks开一个代理服务器：</p>

<pre><code class="language-bash">$ nohup ssserver -p 443 -k password -m aes-256-cfb &gt;&gt; ssserver.log &amp;
</code></pre>
<p>接着，可以直接在这台机器上开shadowsocks的客户端：</p>

<pre><code>$ nohup sslocal -s 127.0.0.1 -p 443 -b 0.0.0.0 -l 1080 -k password &gt;&gt; sslocal.log &amp;
</code></pre>
<p>这里在代理机器上开ss客户端，而不是在使用的时候在本地开客户端，是
因为这样可以通过直接暴露代理机器的1080端口让更多的设备直接使用代理，而不需要
在每台设备上都进行配置，这样做只是考虑使用起来比较方便。</p>

<p>到这里，代理已经搭建起来啦，但还有一个问题是，在校园网内，你很难
得到一个公网ip，使得在外侧能够访问到，一种办法是使用<a href="/20170308/zerotier.html">之前提到的zerotier</a>,
但zerotier也有它的问题，就是不太稳定，本来我们就是想追求文献查询过程中的稳定体验才想
搭建代理的，再弄得不稳定那不就是本末倒置了嘛。</p>

<p>这里我们使用另一种方法，通过ssh将代理机器的端口映射到一台有外网ip机器的端口上去。
首先你需要确保，这台远程机器允许远程转发，需要做的是登录它，修改<code>/etc/ssh/sshd_config</code>文件，在
文件末尾添加<code>GatewayPorts yes</code>，然后用命令<code>sudo service ssh reload</code>重启ssh服务器。</p>

<p>然后登录<b>代理机器</b>，在终端内输入：</p>
<pre><code>ssh -fNC -R 0.0.0.0:1080:localhost:1080 your-user-name@your-server-ip
</code></pre>
<p>这时候可能会报错，原因很可能是远程机器上的1080端口已经被占用。这时，你需要通过<code>netstat -plant | grep 1080</code>
看一下是哪个进程占用了1080端口，用<code>kill -9</code>把它杀掉即可。如果没有报错，大概已经成功啦，你可以用上面那条
netstat命令看到正在转发1080端口的sshd进程。</p>

<h3 id="使用篇">使用篇</h3>
<p>代理搭建成功以后，使用起来就很简单啦，就和用shadowsocks科学上网是差不多的。直接将浏览器的代理设置为
你的远程主机ip，端口设置为1080即可。恩，还要注意代理类型为socks v5。
推荐使用
<a href="https://chrome.google.com/webstore/detail/proxy-switchysharp/dpplabbmogkhghncfbfdeeokoefdjegm?hl=en">Proxy SwitchySharp</a>
这个 Chrome 插件，切换代理很方便。
之后就可以随时随地使用校园网的数据库下载文献了，可以说是非常方便。</p>

<h3 id="补充-解决-ssh-断连问题">补充： 解决 ssh 断连问题</h3>
<p>后来发现原文所述方法还存在一个问题，这里补充一下：</p>

<h4 id="autossh">autossh</h4>

<p>在默认情况下，这样配置 ssh 可能过一段时间可能会自己断掉。
一种解决办法是使用 autossh 代替 ssh，首先在代理机器上下载 autossh</p>

<pre><code>$ sudo apt-get install autossh
</code></pre>

<p>然后还需要修改一下 ssh 的配置文件，</p>

<pre><code>$ vim .ssh/config
</code></pre>
<p>在你的公网服务器的配置项下面加两项配置: <code>ServerAliveInterval 10</code>， <code>ServerAliveCountMax 5</code>。
比如：</p>

<pre><code>Host myserver
    Hostname xxx.xxx.xxx.xxx
    Port 22
    User xxxx
    ServerAliveInterval 10
    ServerAliveCountMax 5
</code></pre>

<p>然后用 autossh 代替 ssh 进行反向代理：</p>

<pre><code>$ autossh -M20000 -fNC -R 0.0.0.0:1080:localhost:1080 your-user-name@your-server-ip
</code></pre>

<h4 id="使用-frp">使用 frp</h4>

<p><a href="https://github.com/fatedier/frp">frp</a> 是一个非常好用的工具，其实可以用它来做很多事情。
这里只需要用它把我们代理机器上的 sslocal 暴露的端口(1080) 代理到公网服务器的某个端口上就可以了。
frp 的文档写的非常详细，这里就不多说了，可以参考
<a href="https://github.com/fatedier/frp/blob/master/README_zh.md#通过-ssh-访问公司内网机器">这里</a>。</p>


				
					<br>
<hr>
<br>
<div class="donate">
	<p>Email: nanguage@yahoo.com</p>
</div>
				
				</div>
			</div>
		</div>
    
	<script src="/assets/js/001.js"></script>
	<script src="/assets/js/002.js"></script>
	<div class="footer">
		<p>blog theme: <a href="https://github.com/h01000110/windows-95">win95</a></p>
	</div>
</body>
</html>